package sifeap.pl.managedbean.menus;

import java.io.InputStream;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import sifeap.bl.ejb.gestionarchivos.GestionArchivosBLLocal;
import sifeap.entities.gestionarchivos.valueobject.GestionArchivoVO;
import sifeap.pl.util.FacesUtils;
import sifeap.util.Util;

@ManagedBean(name = "menuFormatosManagedBean")
@RequestScoped
public class MenuFormatosManagedBean {
	private final String MENSAJES_BUNDLE = "sifeap.pl.bundles.mensajes";
	
	@EJB
	private GestionArchivosBLLocal gestionArchivosBL;
	
	public StreamedContent getFormatoSolicitudCredito() {
		return obtenerArchivo(GestionArchivoVO.PARAMETRO_FORMATO_SOLICITUD_CREDITO);
	}
	
	public StreamedContent getFormatoSolicitudAuxilio() {
		return obtenerArchivo(GestionArchivoVO.PARAMETRO_FORMATO_SOLICITUD_AUXILIO);
	}
	
	public StreamedContent getFormatoPagare() {
		return obtenerArchivo(GestionArchivoVO.PARAMETRO_FORMATO_PAGARE);
	}
	
	public StreamedContent getFormatoCruceAportes() {
		return obtenerArchivo(GestionArchivoVO.PARAMETRO_FORMATO_CRUCE_APORTES);
	}
	
	public StreamedContent getFormatoCartaInstrucciones() {
		return obtenerArchivo(GestionArchivoVO.PARAMETRO_FORMATO_CARTA_INSTRUCCIONES);
	}
	
	private StreamedContent obtenerArchivo(String parametroNombreFormato) {
		StreamedContent mostrarArchivo = null;
		InputStream stream;
		
		try {
			GestionArchivoVO gestionArchivoVo = gestionArchivosBL.obtenerArchivo(Util.obtenerValorParametro(parametroNombreFormato), GestionArchivoVO.PARAMETRO_UBICACION_FORMATOS);
			stream = gestionArchivoVo.getInputStream();
			
			mostrarArchivo = new DefaultStreamedContent(stream, gestionArchivoVo.getContentType(), gestionArchivoVo.getNombreArchivo());
		} catch (Exception e) {
			try {
				FacesUtils.addErrorMessage(FacesUtils.getMensaje(MENSAJES_BUNDLE, "sifeap.menu.formatos.error"), false);
			} catch (Exception e1) {}
			e.printStackTrace();
		}
		return mostrarArchivo;
	}
}
